package com.jch.dm.chapter_11_composite;

/**
 * @author: jch
 * 复合模式 示例
 **/
public abstract class Entry {
    /**
     * 获取名称
     *
     * @return string
     */
    public abstract String getName();

    /**
     * 获取大小
     *
     * @return int
     */
    public abstract int getSize();

    /**
     * 添加文件
     */
    public Entry add(Entry entry) throws FileTreatmentException {
        throw new FileTreatmentException();
    }

    /**
     * 显示条目一览
     */
    public void printList() {
        printList("");
    }

    /**
     * 为条目加上前缀 并 显示条目一览
     *
     * @param prefix 前缀
     */
    protected abstract void printList(String prefix);

    @Override
    public String toString() {
        return getName() + " (" + getSize() + ")";
    }
}
